// 题目要求：
// 给一个长度为 n 的数组表示身高，找出满足身高差在 [l, r] 范围的数量
// 举例： n = 5, l = 2, r = 3
// int[] a = {3 1 6 2 5}
// 输出 4

// 解题思路：
// 排序 + 二分
// 先将数组排序，依次遍历数组，找身高在 a[i] + l, a[i] + r 范围内的另一个身高
// 找身高可以用二叉查找，先找左端点，再找右端点，找完之后求元素的个数
// 找到所有的个数，即找到了所有的最萌身高差个数

// 排序 + 前缀和思想 + 滑动窗口
// 先将数组排序，找身高差在 [0, a[i] + l - 1] 范围的另一个身高个数 count1
// 再找身高差在 [0, a[i] + r] 范围的另一个身高个数 count2
// 返回 count2 - count1 即可

import java.util.*;
import java.io.*;


public class TheMostAdorableHeightDifference {
    public static Read in = new Read();

    // 解法 1：排序 + 二分
    public static void main1(String[] args) throws IOException{
        int n = in.nextInt();
        int l = in.nextInt();
        int r = in.nextInt();
        int[] a = new int[n];

        for(int i = 0; i < n; i++){
            a[i] = in.nextInt();
        }

        Arrays.sort(a);

        long count = 0;

        for(int i = 0; i < n; i++){
            int x1 = a[i] + l;
            int x2 = a[i] + r;
            int start = 0; int end = 0;
            int left = 0; int right = n - 1;
            while(left < right){
                int mid = (right - left) / 2 + left;
                if(a[mid] < x1){
                    left = mid + 1;
                }else{
                    right = mid;
                }
            }
            if(a[left] >= x1) start = left;
            else start = left + 1;

            left = 0; right = n - 1;
            while(left < right){
                int mid = (right - left + 1) / 2 + left;
                if(a[mid] > x2){
                    right = mid  - 1;
                }else{
                    left = mid;
                }
            }
            if(a[right] <= x2) end = left;
            else end = left - 1;

            if(start <= end) count += end - start + 1;
        }

        System.out.println(count);
    }

    // 解法 2：排序 + 前缀和 + 滑动窗口
    public static void main(String[] args) throws IOException{
        int n = in.nextInt();
        int l = in.nextInt();
        int r = in.nextInt();
        int[] a = new int[n];

        for(int i = 0; i < n; i++){
            a[i] = in.nextInt();
        }

        Arrays.sort(a);

        // 找身高在 [0, a[i] + l] 范围内的身高个数
        long count1 = 0;
        int left = 0; int right = 0;
        while(right < n){
            while(a[right] - a[left] > l - 1){
                left++;
            }
            count1 += right - left;
            right++;
        }
        // 找身高在 [0, a[i] + r] 范围内的身高个数
        long count2 = 0;
        left = 0; right = 0;
        while(right < n){
            while(a[right] - a[left] > r){
                left++;
            }
            count2 += right - left;
            right++;
        }
        System.out.println(count2 - count1);
    }
}
